package Controle;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

import Dominio.Artista;
import Dominio.Musica;
import Dominio.Pedido;
import Dominio.Usuario;

public class PersistenciaRW {
	
	public static void carregaDados(String _fileName) throws FileNotFoundException{
		String file_name = _fileName;
        FileInputStream m_fis = null;
        ObjectInputStream m_in = null;
        XMLDecoder m_xdec;

        m_fis = new FileInputStream(file_name);
        
        if(m_fis == null) {
			return;
		}

        m_xdec = new XMLDecoder(m_fis);
        
        if(_fileName == Controlador.ARQ_MUSICAS){
        	ArrayList<Musica> persistencia;
            persistencia = (ArrayList<Musica>) m_xdec.readObject();
            
            Controlador.getControlador().getListaMusica().clear();
            Controlador.getControlador().setListaMusica(persistencia);
        }else
        if(_fileName == Controlador.ARQ_USUARIOS){
        	ArrayList<Usuario> persistencia;
            persistencia = (ArrayList<Usuario>) m_xdec.readObject();
            
            Controlador.getControlador().getListaUsuarios().clear();
            Controlador.getControlador().setListaUsuarios(persistencia);
        }else
        if(_fileName == Controlador.ARQ_ARTISTAS){
        	ArrayList<Artista> persistencia;
            persistencia = (ArrayList<Artista>) m_xdec.readObject();
            
            Controlador.getControlador().getListaArtistas().clear();
            Controlador.getControlador().setListaArtistas(persistencia);
        }else
        if(_fileName == Controlador.ARQ_PEDIDOS){
        	ArrayList<Pedido> persistencia;
        	persistencia = (ArrayList<Pedido>) m_xdec.readObject();
        	
        	Controlador.getControlador().getListaPedidos().clear();
        	Controlador.getControlador().setListaPedidos(persistencia);
        }        	
    }
	
	public static void SalvaDados(String _fileName) throws IOException{
        FileOutputStream m_fos = null;
        ObjectOutputStream m_out = null;
        XMLEncoder m_xenc;

        m_fos = new FileOutputStream(_fileName);

        m_xenc = new XMLEncoder(m_fos);
        
        if(_fileName == Controlador.ARQ_MUSICAS)
        	m_xenc.writeObject(Controlador.getControlador().getListaMusica());
        else
        if(_fileName == Controlador.ARQ_USUARIOS)
        	m_xenc.writeObject(Controlador.getControlador().getListaUsuarios());
        else
        if(_fileName == Controlador.ARQ_ARTISTAS)
        	m_xenc.writeObject(Controlador.getControlador().getListaArtistas());
        else
        if(_fileName == Controlador.ARQ_PEDIDOS)
        	m_xenc.writeObject(Controlador.getControlador().getListaPedidos());
        
        m_xenc.flush();
        m_xenc.close();
        m_fos.close();
	}

}
